<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 高级函数 

        // 函数被另外一个函数调用
        // 函数作为另外一个函数的参数 
        // 函数作为返回值 

        // 1!+2!+3!+...10! 
        // 10! 10 * 9!
        // 9!  9 * 8!
        function factorial(num){
            if(num==1) return 1;
            return num * arguments.callee(num-1);
        }

        function sum_factorial(num){
            if(num==1) return 1;
            let sum = 1;
            for(let i=2;i<=num;i++){ // 构建2 -10 
                sum += factorial(i);
            }
            return sum;
        }


        function add_num(num1,num2){
            return num1 + num2;
        }

        function fn1(a,b,fn){
            return fn(a,b);
        }

        const res = fn1(10,20,add_num);
        console.log(res);


        function outer(){
            function inner(){
                return 'inner'
            }
            return inner
        }

        // outer() =>  inner      函数 没有执行  

        // outer()() => inner()   函数执行
    </script>
</body>
</html>